// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ISafFactory.cs" company="Collaboris Ltd.">
//   Copyright (c) Collaboris Ltd. All rights Reserved.
// </copyright>
// <summary>
//   Defines the ISafFactory type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Collaboris.Saf.Engine
{
    public interface ISafFactory
    {
        /// <summary>
        /// Deletes all instances of object currently store by the factory
        /// </summary>
        void DeleteAllInstances();       
        
        /// <summary>
        /// Creates a macro instance.
        /// </summary>
        /// <returns>An new instance of a macro</returns>
        IMacro CreateMacro();

        /// <summary>
        /// Creates an action instance.
        /// </summary>
        /// <param name="actionName">Name of the action to be created.</param>
        /// <returns>A new instance of the action with the given name</returns>
        IAction CreateAction(string actionName);

        //void RefreshDynamicProperties(object instance);
        
        //DynamicAssignmentsDictionary RefreshDynamicProperties();
    }
}